package com.ycj.design.structure.proxy;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * cglib方法拦截
 * @author xiyang.ycj
 * @since Nov 21, 2019 18:54:48 PM
 */
public class Cglib implements MethodInterceptor {
    /* 创建一个子类 */
    public <T> T getInstance(Class<T> clazz){
        return (T) Enhancer.create(clazz,this);
    }

    @Override
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
        System.out.println("中介--买车记录---找到车源");
        Object invokeSuper = methodProxy.invokeSuper(o, objects);// 调用业务类（父类中）的方法
        System.out.println("中介--买车记录---交易完成--记录业绩");
        return invokeSuper;
    }
}
